﻿using Common.Contract.Authentication.Record;
using Common.Contract.SystemConfig.Record;
using Customer.Model.Model;
using System.Collections.Generic;

namespace Customer.Model.Interface
{
    public interface ICustomerAlertProvider
    {
        #region Alert Overdue
        List<AlertOverdue> RetrieveCustomerOverdue(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        List<AlertCardOverdue> RetrieveCustomerCardOverdue(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        #endregion
        #region Alert Badbank
        List<AlertBadbankTopdown> RetrieveCustomerAlertBadBankTopdown(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0, bool isMax = false);
        List<AlertBadbankBottomup> RetrieveCustomerAlertBadBankBottomup(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0, bool isMax = false);
        List<AlertBadbankWatchlist> RetrieveCustomerAlertBadBankWatchlist(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0, bool isMax = false);
        List<BadBank> RetrieveCustomerBadBank(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);        
        #endregion
        #region Alert Maturity
        List<TblAlertDepositMatdt> RetrieveTblAlertDepositMatdt(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        List<LoanMatdt> RetrieveCustomerLoanMatdt(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        List<AlertLimit> RetrieveCustomerAlertLimit(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        List<AlertBL> RetrieveCustomerAlertBL(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        List<AlertLC> RetrieveCustomerAlertLC(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        #endregion
        #region Other Alerts
        List<AlertGeneral> RetrieveAlertGeneralByDao(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        List<AlertCasa> RetrieveCustomerAlertCasa(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0, bool isMax = false);
        List<AlertInactive> RetrieveCustomerAlertInactive(out int totalRecord, UserRecord dao, string lang, FilterRecord textSearch = null, int pagesize = 0, int pageindex = 0);
        #endregion
        #region Celebration
        List<CustomerRegion> RetrieveCustomerCelebrationByDao(out int totalRecord, UserRecord dao, FilterRecord textSearch = null, string lang = null, int pagesize = 0, int pageindex = 0);
        List<CustomerRelation> RetrieveAllCustomerRelation(UserRecord dao, FilterRecord textSearch = null);
        CustomerRelation RetrieveCustomerRelationByCif(string relCif);
        #endregion
    }
}
